package br.edu.unoesc.minibi.analisador;

public class Analisador {

	private final float multiplicador_a = 0.7f;
	private final float multiplicador_b = 0.7f;

	/**
	 * ft+1=st+mt<br>
	 * sendo st=a.x + (1-a).(st_anterior+mt_anterior)<br>
	 * e mt=b.(st-st_anterior)+(1-b).mt_anterior<br>
	 * baseado em previsão por Alisamento Exponencial Linear <br>
	 * fonte: http://www.eps.ufsc.br/disserta96/mueller/cap3/cap3.htm<br>
	 * 
	 * @param valores
	 * @return
	 */

	public Float getPrevisao(Float[] valores) {
		float[] s = new float[valores.length];
		float[] t = new float[valores.length];
		float ft = 0f;

		for (int i = 0; i < valores.length; i++) {
			if (i == 0) {
				s[i] = valores[i];
				t[i] = 0f;
			} else {
				float st = (multiplicador_a * valores[i]) + ((1 - multiplicador_a) * ((s[i - 1]) + t[i - 1]));
				float mt = (multiplicador_b * (st - s[i - 1])) + ((1 - multiplicador_b) * t[i - 1]);
				ft = st + mt;
				s[i] = st;
				t[i] = mt;
			}
		}

		return ft;
	}
}